package com.final_不可修改;

public class fina定义 {
    /**
     * final定义
     * final 可以修饰类，属性，方法和局部变量
     * final的使用场景：
     * 1.当不希望类被继承时可以使用final修饰 ---> final class A{}
     * 2.当不希望父类的某个方法被子类覆盖或重写时可以用final关键字修饰 ---> public final void method(){};
     * 3.当不希望某个属性被修改时可以使用final关键字修饰 ---> public final int age = 18;
     * 4.当不希望某个局部变量被修改时可以使用final关键字修饰 ---> final int num = 10;
     */
    public static void main(String[] args) {
        E e = new E();
//        e.age = 19;//无法将值赋给 final 变量 'age'
    }
}

//1.当不希望类被继承时可以使用final修饰 --->
final class A {
}
//class B extends A{  }如果打开注释报错  无法从final 'com.final_不可修改.A' 继承

//2.当不希望父类的某个方法被子类覆盖或重写时可以用final关键字修饰 --->
class C {
    public final void method() {
    }
}

class D extends C {
//    public void method() {'method()
//    ' 无法重写 'com.final_不可修改.C' 中的 'method()'；重写的方法为 final
//    }
}

//3.当不希望某个属性被修改时可以使用final关键字修饰 --->
class E {
    public final int age = 18; //看main方法
}

//4.当不希望某个局部变量被修改时可以使用final关键字修饰
class F {
    public void method() {
        final int num = 10;
//        num = 20;//无法将值赋给 final 变量 'num
    }
}
